搜索算法(篇二)
1. 局部搜索算法的统一框架
局部搜索算法是对一类算法的统称,符合其框架的算法很多,比如搜索算法(篇一) 中提到的爬山法、模拟退火法和禁忌搜索算法都属于局部搜索算法。尽管各个算法在优化过程中的细节存在差异,但在优化流程上呈现出很大的共性。我们可以将局部搜索算法的统一框架描述为:算法从一个或若干个初始解出发,在算法参数控制下由当前状态的邻域中产生若干个候选解,并以某种策略在候选解中确定新的当前解。伴随控制参数的调节,重复执行上述搜索过程,直至满足算法终止准则,结束搜索过程并输出优化结果。
在具体设计算法时,需要考虑以下几个方面:
搜索机制的选择
搜索机制是构造算法框架和实现优化的关键,是决定算法搜索行为的根本点。比如爬山法是基于局部贪婪的搜索机制,而模拟退火算法时基于概率分布的搜索机制,禁忌搜索采用避免迂回的策略进行搜索。
邻域函数的设计
邻域函数决定了邻域结构和邻域解的产生方式。算法对问题解的不同描述方式,会直接影响邻域函数的设计,进而影响算法的搜索行为。同时,即使在编码机制确定的情况下,邻域结构也可以采用不同的形式,以考虑新状态产生的可行性、合法性和对搜索效率的影响。在确定邻域结构后,当前状态邻域中候选解的产生方式即可以是确定的,也可以是随机性地。
状态更新方式的设计
更新方式是指以何种策略在新旧状态中确定新的当前状态,是决定算法整体优化特性的关键步骤之一。基于确定性地状态更新方式的搜索,容易陷入局部最优;而随机性地状态更新方式,尤其是概率性劣向转移,往往取得较好的全局优化解,但是计算时间也比较长。
参数的控制方式
控制参数是决定算法搜索进程和行为的又一关键因素。合适的参数控制有助于增强算法在邻域中的优化能力和效率,同时也必须以一定的准则和方式进行修改以适应算法性能的动态变化。
算法终止准则的设计
终止准则是判断算法是否收敛的标准,决定了算法的最终优化性能。算法收敛理论为终止理论提供了明确的设计方案,但是基于理论分析所得的收敛准则往往很苛刻的,甚至难以应用。实际设计时,应兼顾算法的优化质量和搜索效率等多方面性能,或根据问题需要着重强调算法的某方面性能。
2. 变邻域搜索算法(Variable neighborhood search,VNS)
VNS算法介绍:
变邻域搜索算法(VNS)是一种改进型的局部搜索算法,算法进行的每一步迭代都是通过搜索当前解的邻域得到的。VNS算法是在邻域搜索算法基础上不断改进邻域结构,通过变换邻域以增大搜索范围,一般情况下,搜索的邻域越大,局部搜索获得的最优解质量越好,因此最终得到的解精确度也就越高。
VNS依赖于以下观察事实:
- 一个邻域结构的局部最优解不一定是另一个邻域结构的局部最优解。
- 全局最优解是所有可能邻域的局部最优解。
- 对于很多问题,若干个邻域结构的局部最优解是相互靠近的。
变邻域搜索算法过程如下:
其中 S 表示初始解,邻域的个数为
- 输入:初始解
S ,定义 M 个邻域,记为